package movilmax.sia_corp.action;


import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;


import utilidades.Cadena;

import movilmax.sia_corp.model.ListaSs;
import movilmax.sia_corp.model.Listax;
import movilmax.sia_corp.model.SiteSurvey;
import movilmax.sia_corp.model.Usuario;
import apli.conectar.Conectar;
import basedatos.Fecha;
import basedatos.Resultado;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class RegistroSiteSurvey  extends ActionSupport {
	private static final long serialVersionUID = -8058063592022450882L;
	private LinkedList<SiteSurvey> lst_sitesurveys;
	private Conectar BASE;
	private SiteSurvey site;
	private String cod_prospecto;
	private List<Listax> lst_sucursales;
	private List<Listax> lst_servicios;
	private List<Listax> lst_productos;
	private String cod_item;
	private String sucursal;
	private String servicio;
	private String producto;
	private List<ListaSs> tabla_ss;
	
	private String ver_enviar1; 
	@SuppressWarnings("rawtypes")
	public void validate(){	
		try{
			if( this.getCod_prospecto().length() == 0 ){	
				this.addActionError("Debe cargar el prospecto" );
				return;
			}
			Cadena C=new Cadena();
			LinkedList lst_suc=C.tokens(this.getSucursal(), ",");
  	    	LinkedList lst_ser=C.tokens(this.getServicio(), ",");
  	    	LinkedList lst_pro=C.tokens(this.getProducto(), ",");
			int ctd_val1=0,ctd_val2=0,ctd_val3=0,tt_serv_datos=0;
			boolean vd=false;
  	    	for(int i=0;i< lst_suc.size();i++){
  	    		if(!lst_suc.get(i).toString().trim().equals("-1") && !lst_suc.get(i).toString().trim().equals("") )
  	    			ctd_val1++;
  	    		if(!lst_ser.get(i).toString().trim().equals("-1") && !lst_ser.get(i).toString().trim().equals("") )
  	    			ctd_val2++;
  	    		if(!lst_pro.get(i).toString().trim().equals("-1") && !lst_pro.get(i).toString().trim().equals("") )
  	    			ctd_val3++;
  	    		
  	    		if(lst_ser.get(i).toString().trim().equals("3") || lst_ser.get(i).toString().trim().equals("4")  ){
  	    			 tt_serv_datos++;
  	    			 vd=true;
  	    		}
  	    		/*if(!lst_ser.get(i).toString().trim().equals("-1") ){
  	    			tt_servicios++;
 	    		}*/
  	    	}
  	    	if ( ctd_val1==0 || ctd_val2==0  || ctd_val3==0 ){	
				this.addActionError( "Debe seleccionar sucursal,servicio y producto" );
				return;
			}
			if ( this.getSite().getObs().length() == 0 ){	
				this.addActionError( "Debe ingresar las observaciones" );
				return;
			}
			
			for(int z=0;z<lst_suc.size(); z++){
					String dato1= lst_suc.get(z).toString().trim();
					String dato2= lst_ser.get(z).toString().trim();
					//com.sun.net.ssl.internal.ssl.Debug.println("VALORES 1", dato1+"  -  "+dato2);
					if(!dato1.equals("-1") && !dato2.equals("-1") ){
						int cp1=ninclusiones(lst_suc, dato1);
						int cp2=ninclusiones(lst_ser, dato2);
						if( cp1>1 && cp2>1 ){
							this.addActionError("Sucursal y servicio estan duplicados" );
							return;
						}
					}
			}
				 
				if(vd){
					if(tt_serv_datos<2){
		  				//this.addActionError("Para agregar el servicio de datos debe estar incluido en dos sucursales" );
						//return;
		  			}
				}
				
				
				int sucursales=0;
				BASE= new Conectar();
		    	if(BASE.getMsg().equals("SI")){	
						Resultado RCS=BASE.getBaseDatos().consultar("Select count(*) as tt from corp_sucursales where prospecto='"+ this.getCod_prospecto() +"' and cliente='0' ");
						if(RCS.RP){
							sucursales=RCS.getInt("tt");
						}
						if(ninclusionesD(lst_suc)!=sucursales ){
							this.addActionError("Debe seleccionar al menos un servicio por sucursal" );
	  	  				    return;
						}
						for(int i=0;i< lst_suc.size();i++){
			  	    		if(lst_ser.get(i).toString().trim().equals("3") || lst_ser.get(i).toString().trim().equals("4") ){
			  	    			if(sucursales<2){
			  	    				//this.addActionError("Para agregar el servicio de datos deben existir dos sucursales como minimo" );
			  	  				   // return;
			  	    			}	
			  	    		}
			  	       }	
		    	}
		    	
		}catch(Exception err){
			//this.addActionError( "Error" );	
		}
	} 
	@SuppressWarnings("rawtypes")
	private int ninclusiones(LinkedList lst, String dato ){
		int n=0;
		String vx="";
		for(int i=0;i< lst.size();i++ ){
			    vx=lst.get(i).toString().trim();
			   // com.sun.net.ssl.internal.ssl.Debug.println("VALOR "+i, vx+"="+dato.trim());
	    		if( vx.equalsIgnoreCase(dato.trim()) ){
	    			n++;
	    		}
	    }	 
	    return n;
	}
	
	
	@SuppressWarnings({ "rawtypes", "unchecked" })
	private int ninclusionesD(LinkedList lst){
		int n=0,c=0;
		String vx="";
		LinkedList lst_aux=new LinkedList ();
		for(int i=0;i< lst.size();i++ ){
			    vx=lst.get(i).toString().trim();
			    if(!vx.equals("-1")){
			    	n= ninclusiones(lst_aux,vx);	
		    		if( n==0 ){
		    			lst_aux.add(vx);
		    			c++;
		    		}
			    }
	    }	 
	    return c;
	}
	@SuppressWarnings("rawtypes")
	public String guardar_site() throws Exception {
		Map session = ActionContext.getContext().getSession();
	    Usuario USUARIO = (Usuario)session.get("ses_usuario");
	    if (USUARIO!=null){	
	    	BASE= new Conectar();
	    	if(BASE.getMsg().equals("SI")){	
	    		try{
	    			Fecha F=new Fecha();
	    			String FECHA=F.getFecha();
	    			String HORA=F.getHoras();
	    			String SQL="",CABECERA="",cod_site="";
	    			int i=0;
	    			if( this.getSite().getCodigo().equals("-1") ){
	    				SQL="INSERT INTO corp_seguimiento_actividades " +
  		    			"(prospecto,actividad,detalle,obs,usuario,fecha,hora,stx) "+
  		    			"VALUES('"+this.getCod_prospecto()+"','9','4','"+ this.getSite().getObs() +"','"+ USUARIO.getUsuario() +"','"+ FECHA +"','"+HORA+"','REGISTRADO' )";
  		    	        BASE.getBaseDatos().ejecutar(SQL);
  		    	      	Cadena C=new Cadena();
  		    	    	cod_site=BASE.getBaseDatos().generarCodigo("corp_sitesurvey", "codigo");
  		    	    	SQL="INSERT INTO corp_sitesurvey " +
  		    				"(codigo,prospecto,vendedor_,obs,usuario,fecha,fecha_act,hora,hora_act,stx) "+
  		    				"VALUES('"+cod_site+"','"+this.getCod_prospecto()+"','"+USUARIO.getCod_vendedor()+"','"+ this.getSite().getObs() +"','"+ USUARIO.getUsuario() +"','"+ FECHA +"','"+ FECHA +"','"+HORA+"','"+HORA+"','REGISTRADO' )";
  		    	        BASE.getBaseDatos().ejecutar(SQL);
  		    	    	LinkedList lst_suc1=C.tokens(this.getSucursal(), ",");
  		    	    	LinkedList lst_serv=C.tokens(this.getServicio(), ",");
  		    	    	LinkedList lst_prod=C.tokens(this.getProducto(), ",");
  		    	    	for(i=0; i<lst_suc1.size();i++){
  		    	    		String suc=lst_suc1.get(i).toString();
  		    	    		String ser=lst_serv.get(i).toString();
  		    	    		String pro=lst_prod.get(i).toString();
  		    	    		if(!suc.equals("-1") && !ser.equals("-1") && !pro.equals("-1") ){
	  		    	    		SQL="INSERT INTO corp_sitesurvey_detalle " +
	  	  		    			"(site,sucursal,servicio,producto) "+
	  	  		    			"VALUES('"+cod_site+"','"+ suc +"','"+ ser +"','"+ pro +"' )";
	  	  		    	        BASE.getBaseDatos().ejecutar(SQL);
  		    	    		}
  		    	    	}
	  		         CABECERA="NUEVO SITE SURVEY INGRESADO ";
		    	     this.addActionMessage("Site survey registrado con codigo ="+cod_site+", ahora puede enviarlo al depatamento de planeamiento");
		    	     BASE.getBaseDatos().cerrarConexion();
		    		 return SUCCESS;	  
	    		 }else{
	    				SQL="INSERT INTO corp_seguimiento_actividades " +
  		    			"(prospecto,actividad,detalle,obs,usuario,fecha,hora,stx) "+
  		    			"VALUES('"+this.getCod_prospecto()+"','9','4','(ACTUALIZADO) "+this.getSite().getObs()+"','"+ USUARIO.getUsuario() +"','"+ FECHA +"','"+HORA+"','ACTUALIZADO' )";
  		    	        BASE.getBaseDatos().ejecutar(SQL);
  		    	        Cadena C=new Cadena();
		    	    	cod_site=this.getSite().getCodigo();
		    	    	SQL="UPDATE corp_sitesurvey set fecha_act='"+ FECHA +"',hora_act='"+HORA+"',stx='ACTUALIZADO'  Where codigo='"+cod_site+"'  ";
		    	        BASE.getBaseDatos().ejecutar(SQL);
		    	        LinkedList lst_cod1=C.tokens(this.getCod_item(), ",");
		    	    	LinkedList lst_suc1=C.tokens(this.getSucursal(), ",");
		    	    	LinkedList lst_serv=C.tokens(this.getServicio(), ",");
		    	    	LinkedList lst_prod=C.tokens(this.getProducto(), ",");
		    	    	for(i=0; i<lst_suc1.size();i++){
		    	    		String cod=lst_cod1.get(i).toString().trim();
		    	    		String suc=lst_suc1.get(i).toString().trim();
  		    	    		String ser=lst_serv.get(i).toString().trim();
  		    	    		String pro=lst_prod.get(i).toString().trim();
  		    	    		if(!suc.equals("-1") && !ser.equals("-1") && !pro.equals("-1") ){
  		    	    			if(cod.equals("-1") ){
		  		    	    		SQL="INSERT INTO corp_sitesurvey_detalle " +
		  	  		    			"(site,sucursal,servicio,producto) "+
		  	  		    			"VALUES('"+cod_site+"','"+ suc +"','"+ ser +"','"+ pro +"' )";
		  	  		    	         BASE.getBaseDatos().ejecutar(SQL);
  		    	    			}else{
  		    	    				SQL="UPDATE corp_sitesurvey_detalle " +
		  	  		    			"Set sucursal='"+ suc +"',servicio='"+ ser +"',producto='"+ pro +"'  "+
		  	  		    			"Where cod='"+cod+"' ";
		  	  		    	         BASE.getBaseDatos().ejecutar(SQL); 
  		    	    			}
  		    	    		}else{
  		    	    			   
  		    	    		}
		    	    	}
	  		    	    this.addActionMessage("Site survey actualizado correctamente, ahora puede enviarlo al departamento de planeamiento");
	  		    	    CABECERA="SITE SURVEY ACTUALIZADO";
	    			}   
	    			String  MSG_EM="",MPARA=USUARIO.getEmail()+","+USUARIO.getEmail_sup();
		        	//*********************************ENVIAR CORREO REGISTRO PROSPECTO ****************************************************************//
	    			SQL="Select P.identificacion,P.nombres+' '+P.apellidos as razonx,P.tipo,P.telefono,P.telefono_oficina,P.celular,P.email,U.email as em_vendedor,V.descripcion as des_vend "+
					"from prospectos P,corp_asignaciones A,usuarios U,vendedores V, corp_sitesurvey ss "+
					"Where ss.codigo='"+cod_site+"' and A.status='EN PROCESO' and ss.prospecto = P.codigo And P.codigo = A.prospecto "+
					"and A.vendedor=V.cod  and V.usuario=U.usuario ";
	    		
		    		Resultado RCS = BASE.getBaseDatos().consultar(SQL);
		    		String razon=RCS.getCadena("identificacion")+" - "+RCS.getCadena("razonx");
	            	String telfs="";
		            if(RCS.RP){
		            	razon=RCS.getCadena("identificacion")+" - "+RCS.getCadena("razonx");
		            	telfs=RCS.getCadena("telefono")+" / "+RCS.getCadena("telefono_oficina")+" / "+RCS.getCadena("celular");
		            }
			        MSG_EM = CABECERA+" CODIGO SITE SURVEY = "+ cod_site +"<br/>\n";
   				    MSG_EM = MSG_EM + "Razon social: " + razon + " <br/>\n";
   				    MSG_EM = MSG_EM + "Telefonos: " + telfs +" <br/>\n";
    				MSG_EM = MSG_EM + "Fecha status: "+new Fecha().getFecha()+" "+ new Fecha().getHoras() +" <br/>\n";
    				MSG_EM = MSG_EM + "Usuario status: " + USUARIO.getDescripcion() + " <br/>\n";
    				MSG_EM = MSG_EM + "Observaciones: " + this.getSite().getObs() + " <br/>\n";
					SQL=" INSERT INTO apli_emails (para,cabecera,mensaje) VALUES('" + MPARA + "','"+CABECERA+" CODIGO="+cod_site+" PROSPECTO="+razon+"','" + MSG_EM + "' ) ";
					BASE.getBaseDatos().ejecutar(SQL);
			        //*************************************FIN DE ENVIO DE CORREO*********************************************************//
				 session.remove("ses_tabla_ss");
				 BASE.getBaseDatos().cerrarConexion();
  		    	 return SUCCESS; 	
	    	  }catch(Exception err  ){
				    this.addActionError("Error: "+err.toString() );
			  }  
		   }
		   else
			 this.addActionError("No hay conexion al servidor");  
	      } 
	     else
		    this.addActionError("La sesion del usuario ha caducado");   	
	
	     return ERROR;
    } 
	
	public String borrar_item() throws Exception {
		String SQL="";
		boolean eli=false;
		   String cod=this.getCod_item();
		    if(!cod.equals("-1")){
		    	BASE= new Conectar();
		    	if(BASE.getMsg().equals("SI")){	
	  			      SQL="DELETE FROM corp_sitesurvey_detalle Where cod='"+cod+"' ";
	    	          BASE.getBaseDatos().ejecutar(SQL); 
	    	          eli=true;
	    	          BASE.getBaseDatos().cerrarConexion();
		    	}  
			}   
		if(eli)    
		  this.addActionMessage("Eliminado");
		return SUCCESS;
	}
	
	@SuppressWarnings("rawtypes")
	public String actualizar() throws Exception {
		  Map session = ActionContext.getContext().getSession();
		    Usuario USUARIO = (Usuario)session.get("ses_usuario");
		    String SQL="";
		    if (USUARIO!=null){	
		    	BASE= new Conectar();
		    	if(BASE.getMsg().equals("SI")){	
		    		Fecha F=new Fecha();
	    			String FECHA=F.getFecha();
	    			String HORA=F.getHoras();
	    			String cod_prospecto="";
	    			Resultado RCS = BASE.getBaseDatos().consultar("Select S.prospecto  from corp_sitesurvey S where S.codigo='"+ this.getSite().getCodigo() +"' ");
	                if(RCS.RP){
	                	cod_prospecto=RCS.getCadena("prospecto");	
	                }
	    			SQL="INSERT INTO corp_seguimiento_actividades " +
  		    			"(prospecto,actividad,detalle,obs,usuario,fecha,hora) "+
  		    			"VALUES('"+cod_prospecto+"','9','5','APROBAR SITE SURVEY','"+ USUARIO.getUsuario() +"','"+ FECHA +"','"+HORA+"' )";
  		    	     BASE.getBaseDatos().ejecutar(SQL); 
		    		 SQL = "UPDATE corp_sitesurvey set autorizada='"+USUARIO.getUsuario()+"',stx='APROBADO X GTE. VENTAS',fecha_act='" +FECHA+ "',hora_act='" +HORA+ "',usuario_act='" +USUARIO.getUsuario() + "' where codigo='" + this.getSite().getCodigo()  +  "' ";
		    	     BASE.getBaseDatos().ejecutar(SQL);
		    	     SQL = "INSERT INTO corp_aprobaciones(site,usuario,fecha,hora,stx,obs,tipo) VALUES ('" +this.getSite().getCodigo()+"','" +USUARIO.getUsuario() + "','"+FECHA+ "','"+HORA+ "','APROBADO X GTE. VENTAS','NINGUNA','1' ) ";
		    	     BASE.getBaseDatos().ejecutar(SQL);
		    	   
		    	     SQL = "UPDATE corp_precontrato set usuario_status='"+USUARIO.getUsuario()+"',status='APROBADO',fecha_status='" +FECHA+ "',hora_status='" +HORA+ "' where prospecto='"+cod_prospecto+"' and status in ('REGISTRADO','ACTUALIZADO','RECHAZADO' )  ";
		    	     BASE.getBaseDatos().ejecutar(SQL);
		    	     /**************************ENVIO DE CORREO POR APROBACION DE SS*****************************/
		    	     
		    		 SQL="Select P.identificacion,P.nombres+' '+P.apellidos as razonx,P.tipo,P.telefono,P.telefono_oficina,P.celular,P.email,U.email as em_vendedor,V.descripcion as des_vend "+
					"from prospectos P,corp_asignaciones A,usuarios U,vendedores V, corp_sitesurvey ss "+
					"Where ss.codigo='"+this.getSite().getCodigo()+"' and A.status='EN PROCESO' and ss.prospecto = P.codigo And P.codigo = A.prospecto "+
					"and A.vendedor=V.cod  and V.usuario=U.usuario ";
		    		
		    		RCS = BASE.getBaseDatos().consultar(SQL);
		            if(RCS.RP){
		            	String MPARA ="planeamiento@movilmax.com,dick@movilmax.com",EM_VENDEDOR=RCS.getCadena("em_vendedor");
		            	String razon=RCS.getCadena("identificacion")+" - "+RCS.getCadena("razonx");
		            	String telfs=RCS.getCadena("telefono")+" / "+RCS.getCadena("telefono_oficina")+" / "+RCS.getCadena("celular");
		            	String  MSG_EM="";	
		    			     MSG_EM = "Se ha generado un nuevo site survey con el codigo: "+this.getSite().getCodigo()+" <br/>\n";
		    				 MSG_EM = MSG_EM + "Razon social: " + razon + " <br/>\n";
		    				 MSG_EM = MSG_EM + "Telefonos: " + telfs +" <br/>\n";
		    				 MSG_EM = MSG_EM + "Status: Enviado a planeamiento  <br/>\n";
		    				 MSG_EM = MSG_EM + "Fecha status: "+new Fecha().getFecha()+" "+ new Fecha().getHoras() +" <br/>\n";
		    				 MSG_EM = MSG_EM + "Usuario status: " + USUARIO.getDescripcion() + " <br/>\n";
		    				 SQL=" INSERT INTO apli_emails (para,cabecera,mensaje) VALUES('" + MPARA+","+EM_VENDEDOR + "','NUEVO SITE SURVEY CODIGO="+this.getSite().getCodigo()+" PROSPECTO="+razon+"','" + MSG_EM + "' ) ";
		    				 BASE.getBaseDatos().ejecutar(SQL);	
		    				 MSG_EM ="";
		    				 MSG_EM = "Ha sido aprobado y enviado al dpto. de planeacion site survey con el codigo: "+this.getSite().getCodigo()+" <br/>\n";
		    				 MSG_EM = MSG_EM + "Razon social: " + razon + " <br/>\n";
		    				 MSG_EM = MSG_EM + "Telefonos: " + telfs +" <br/>\n";
		    				 MSG_EM = MSG_EM + "Status: Site survey aprobado por gerente de ventas  <br/>\n";
		    				 MSG_EM = MSG_EM + "Observacion: Ahora puede generar el check list  <br/>\n";
		    				 MSG_EM = MSG_EM + "Fecha status: "+new Fecha().getFecha()+" "+ new Fecha().getHoras() +" <br/>\n";
		    				 MSG_EM = MSG_EM + "Usuario status: " + USUARIO.getDescripcion() + " <br/>\n";
		    				 SQL=" INSERT INTO apli_emails (para,cabecera,mensaje) VALUES('" + EM_VENDEDOR + "','SITE SURVEY APROBADO ("+razon+")','" + MSG_EM + "' ) ";
		    				 BASE.getBaseDatos().ejecutar(SQL);		 
		            }
		    	    /**********************************FIN DE ENVIO DE CORREO***********************************/
		    	     
		    	     this.addActionMessage("Aprobado");
		    	     BASE.getBaseDatos().cerrarConexion();
		    		 return SUCCESS;	 
		    	}else{
		    	   this.addActionError("No hay conexion al servidor");	
		    	}
		    }else{
   	    	    this.addActionError("La sesion del usuario ha caducado");	
	    	}
		    return ERROR;	 	   	  	
	}	
	

	@SuppressWarnings("rawtypes")
	public String listar(){
		lst_sitesurveys=new LinkedList<SiteSurvey>();
		  Map session = ActionContext.getContext().getSession();
		    Usuario USUARIO = (Usuario)session.get("ses_usuario");
		    int i=0;  
		    if (USUARIO!=null){	
		    	BASE= new Conectar();
		    	if(BASE.getMsg().equals("SI")){	
		    	    String SQL="select S.codigo,S.prospecto,CONVERT(varchar(30),S.fecha_act,103) as fecha,s.hora_act as hora,T.identificacion+' - '+T.nombres+' '+T.apellidos as razon,"+
						"s.obs,S.stx,S.usuario,V.descripcion as des_vendedor "+
						"from prospectos T,corp_sitesurvey S,Vendedores V "+
						"where S.stx in('REGISTRADO','ACTUALIZADO') and S.prospecto=T.codigo and S.usuario=V.usuario and V.supervisor='"+USUARIO.getUsuario()+"' "+ 
						"Order by S.fecha_act ASC,S.hora_act ASC";
		    		Resultado RCS=BASE.getBaseDatos().consultar(SQL);
		    		if(RCS.RP){
		    		   do{
		    			   SiteSurvey ITM=new SiteSurvey();
		    			   ITM.setId(new Cadena().convertirStr(i) );
		    			   ITM.setCodigo(RCS.getCadena("codigo"));
		    			   ITM.setFecha(RCS.getCadena("fecha"));
		    			   ITM.setHora(RCS.getCadena("hora"));
		    			   ITM.setProspecto(RCS.getCadena("razon"));
		    			   ITM.setSucursal(RCS.getCadena("obs"));
		    			   ITM.setVendedor(RCS.getCadena("des_vendedor"));
		    			   lst_sitesurveys.add(ITM);
		    			   i++;
		    		   }while(RCS.sigItem());
		    		}
		    	  BASE.getBaseDatos().cerrarConexion();	
		    	}
		    }
		  return SUCCESS;
	}
	
	
	@SuppressWarnings("rawtypes")
	public String rechazar() throws Exception {
		  Map session = ActionContext.getContext().getSession();
		    Usuario USUARIO = (Usuario)session.get("ses_usuario");
		    String SQL="";
		    if (USUARIO!=null){	
		    	BASE= new Conectar();
		    	if(BASE.getMsg().equals("SI")){	
		    		Fecha F=new Fecha();
	    			String FECHA=F.getFecha();
	    			String HORA=F.getHoras();
	    			String cod_prospecto="";
	    			Resultado RCS = BASE.getBaseDatos().consultar("Select S.prospecto  from corp_sitesurvey S where S.codigo='"+ this.getSite().getCodigo() +"' ");
	                if(RCS.RP){
	                	cod_prospecto=RCS.getCadena("prospecto");	
	                }
	    			SQL="INSERT INTO corp_seguimiento_actividades " +
		    			"(prospecto,actividad,detalle,obs,usuario,fecha,hora) "+
		    			"VALUES('"+cod_prospecto+"','9','9991','RECHAZAR SITE SURVEY','"+ USUARIO.getUsuario() +"','"+ FECHA +"','"+HORA+"' )";
		    	     BASE.getBaseDatos().ejecutar(SQL); 
		    		 SQL = "UPDATE corp_sitesurvey set stx='RECHAZADO',fecha_act='" +FECHA+ "',hora_act='" +HORA+ "',usuario_act='" +USUARIO.getUsuario() + "' where codigo='" + this.getSite().getCodigo()  +  "' ";
		    	     BASE.getBaseDatos().ejecutar(SQL);
		    	     
		    	     /**************************ENVIO DE CORREO POR APROBACION DE SS*****************************/
		    	        		    		
		    		SQL="Select P.identificacion,P.nombres+' '+P.apellidos as razonx,P.tipo,P.telefono,P.telefono_oficina,P.celular,P.email,U.email as em_vendedor,V.descripcion as des_vend "+
						"from prospectos P,corp_asignaciones A,usuarios U,vendedores V, corp_sitesurvey ss "+
						"Where ss.codigo='"+this.getSite().getCodigo()+"' and A.status='EN PROCESO' and ss.prospecto = P.codigo And P.codigo = A.prospecto "+
						"and A.vendedor=V.cod  and V.usuario=U.usuario ";
		    		
		    		RCS = BASE.getBaseDatos().consultar(SQL);
		            if(RCS.RP){
		            	String MPARA =RCS.getCadena("em_vendedor");
		            	String razon=RCS.getCadena("identificacion")+" - "+RCS.getCadena("razonx");
		            	String telfs=RCS.getCadena("telefono")+" / "+RCS.getCadena("telefono_oficina")+" / "+RCS.getCadena("celular");
		            	String  MSG_EM="";
		    			     MSG_EM = "Se ha rechazado site Survey con el codigo: "+this.getSite().getCodigo()+" <br/>\n";
		    				 MSG_EM = MSG_EM + "Razon social: " + razon + " <br/>\n";
		    				 MSG_EM = MSG_EM + "Telefonos: " + telfs +" <br/>\n";
		    				 MSG_EM = MSG_EM + "Status: Rechazar site survey  <br/>\n";
		    				 MSG_EM = MSG_EM + "Fecha status: "+new Fecha().getFecha()+" "+ new Fecha().getHoras() +" <br/>\n";
		    				 MSG_EM = MSG_EM + "Usuario status: " + USUARIO.getDescripcion() + " <br/>\n";
		    				 SQL=" INSERT INTO apli_emails (para,cabecera,mensaje) VALUES('" + MPARA + "','SITE SURVEY RECHAZADO ("+razon+")','" + MSG_EM + "' ) ";
		    				 BASE.getBaseDatos().ejecutar(SQL);		    			
		            }
		    	     /**********************************FIN DE ENVIO DE CORREO***********************************/
		    	     
		    	     this.addActionMessage("Rechazado");
		    	     BASE.getBaseDatos().cerrarConexion();
		    		 return SUCCESS;	 
		    	}else{
		    	   this.addActionError("No hay conexion al servidor");	
		    	}
		    }else{
 	    	    this.addActionError("La sesion del usuario ha caducado");	
	    	}
		    return ERROR;	 	   	  	
	}
	
	 @SuppressWarnings({ "rawtypes", "unchecked" })
	public String agregarItem(){
		  Map session = ActionContext.getContext().getSession();
		  
		  site=new SiteSurvey();
		  this.getSite().setCodigo("-1");
		  this.getSite().setFecha_status(new Fecha().getFecha()+' '+new Fecha().getHoras() );
		  this.getSite().setObs_status("NINGUNA");
		  this.getSite().setStatus("NO REGISTRADO");
		  tabla_ss= new ArrayList<ListaSs>();
		  this.setVer_enviar1("NO");
		  Usuario USUARIO = (Usuario)session.get("ses_usuario");
		  if (USUARIO==null){	
			  this.addActionError("Su sesion ha caducado");
			  return ERROR;
		  }
		  BASE= new Conectar();
		  if(BASE.getMsg().equals("SI")){
			String  SQL="Select S.codigo,S.stx,S.obs,CONVERT(varchar(30),S.fecha_act,103)+' '+S.hora_act as fecha_stx,D.cod,D.sucursal,D.servicio,D.producto,UPPER(P.descripcion) as des_prod,UPPER(X.descripcion) as des_serv,UPPER(Z.descripcion) des_suc  "+
					"from corp_sitesurvey S,corp_sitesurvey_detalle D,corp_productos P,corp_servicios X,corp_sucursales Z "+
					"Where S.prospecto='"+ this.getCod_prospecto() +"' and S.stx in('ACTUALIZADO','REGISTRADO','RECHAZADO') and S.codigo=D.site and D.producto=P.cod and D.servicio=X.cod and D.sucursal=Z.cod and Z.cliente='0' Order by D.sucursal,X.descripcion";
					Resultado  RCS=BASE.getBaseDatos().consultar(SQL);
					  if(RCS.RP){
						  this.setVer_enviar1("SI");
						  this.getSite().setCodigo( RCS.getCadena("codigo"));
						  this.getSite().setFecha_status(RCS.getCadena("fecha_stx"));
						  this.getSite().setObs_status(RCS.getCadena("obs"));
						  this.getSite().setStatus(RCS.getCadena("stx"));
						  do{ 
							  ListaSs LST=new ListaSs();
							  LST.setId(new Cadena().convertirStr( tabla_ss.size()+1 ));
							  LST.setCod(  RCS.getCadena("cod")   );
							  LST.setSucursal(RCS.getCadena("sucursal"));
							  LST.setServicio(RCS.getCadena("servicio"));
							  LST.setProducto(RCS.getCadena("producto"));
							  LST.setDes_sucursal(RCS.getCadena("des_suc"));
							  LST.setDes_servicio(RCS.getCadena("des_serv"));
							  LST.setDes_producto(RCS.getCadena("des_prod"));
							  tabla_ss.add(LST);
						  }while(RCS.sigItem()); 
					 }else{
						 SQL="Select S.codigo,S.stx,S.obs,CONVERT(varchar(30),S.fecha_act,103)+' '+S.hora_act as fecha_stx  "+
							"from corp_sitesurvey S "+
							"Where S.prospecto='"+ this.getCod_prospecto() +"' and stx in('ACTUALIZADO','REGISTRADO','RECHAZADO') ";
							RCS=BASE.getBaseDatos().consultar(SQL);
							if(RCS.RP){
								  this.getSite().setCodigo( RCS.getCadena("codigo"));
								  this.getSite().setFecha_status(RCS.getCadena("fecha_stx"));
								  this.getSite().setObs_status(RCS.getCadena("obs"));
								  this.getSite().setStatus(RCS.getCadena("stx"));	
							 }		  
					 }	
				BASE.getBaseDatos().cerrarConexion();	  
		  }else{
			  this.addActionError("No hay conexion al servidor");
			  return ERROR;
		  }
			 String CTD= (String)session.get("ses_ctd_itss");
			 if (CTD==null){
				 session.put("ses_ctd_itss", "4");
				 CTD="4";
			 }
			 Cadena C=new Cadena();
			 int ctdx=C.convertirInt( CTD );
			  for(int x=tabla_ss.size();x<ctdx;x++){
					  ListaSs LST=new ListaSs();
					  LST.setId(new Cadena().convertirStr( tabla_ss.size()+1 ));
					  LST.setCod("-1");
					  LST.setSucursal("-1");
					  LST.setServicio("-1");
					  LST.setProducto("-1");
					  LST.setDes_sucursal("Seleccione la sucursal");
					  LST.setDes_servicio("Seleccione el servicio");
					  LST.setDes_producto("Seleccione el servicio");
					  tabla_ss.add(LST);
			  }
			  session.put("ses_tabla_ss",tabla_ss);
			  return SUCCESS;
	  }
	@SuppressWarnings({ "rawtypes", "unchecked" })
	public String agregarItemZ(){
			 Map session = ActionContext.getContext().getSession();
			 String CTD= (String)session.get("ses_ctd_itss");
			 if (CTD==null){
				 session.put("ses_ctd_itss", "1");
			 }else{
				 Cadena C=new Cadena();	
				 session.put("ses_ctd_itss", C.convertirStr(C.convertirInt( CTD )+1 ) );
			 }
			 return agregarItem();
	 }
	
	
	public LinkedList<SiteSurvey> getLst_sitesurveys() {
		return lst_sitesurveys;
	}
	public void setLst_sitesurveys(LinkedList<SiteSurvey> lst_sitesurveys) {
		this.lst_sitesurveys = lst_sitesurveys;
	}
	public SiteSurvey getSite() {
		return site;
	}
	public void setSite(SiteSurvey site) {
		this.site = site;
	}
	public String getCod_prospecto() {
		return cod_prospecto;
	}
	public void setCod_prospecto(String cod_prospecto) {
		this.cod_prospecto = cod_prospecto;
	}
	public List<Listax> getLst_sucursales() {
		return lst_sucursales;
	}
	public void setLst_sucursales(List<Listax> lst_sucursales) {
		this.lst_sucursales = lst_sucursales;
	}
	public List<Listax> getLst_servicios() {
		return lst_servicios;
	}
	public void setLst_servicios(List<Listax> lst_servicios) {
		this.lst_servicios = lst_servicios;
	}
	public List<Listax> getLst_productos() {
		return lst_productos;
	}
	public void setLst_productos(List<Listax> lst_productos) {
		this.lst_productos = lst_productos;
	}
	public List<ListaSs> getTabla_ss() {
		return tabla_ss;
	}
	public void setTabla_ss(List<ListaSs> tabla_ss) {
		this.tabla_ss = tabla_ss;
	}
	public String getCod_item() {
		return cod_item;
	}
	public void setCod_item(String cod_item) {
		this.cod_item = cod_item;
	}
	public String getSucursal() {
		return sucursal;
	}
	public void setSucursal(String sucursal) {
		this.sucursal = sucursal;
	}
	public String getServicio() {
		return servicio;
	}
	public void setServicio(String servicio) {
		this.servicio = servicio;
	}
	public String getProducto() {
		return producto;
	}
	public void setProducto(String producto) {
		this.producto = producto;
	}
	public String getVer_enviar1() {
		return ver_enviar1;
	}
	public void setVer_enviar1(String ver_enviar1) {
		this.ver_enviar1 = ver_enviar1;
	}
	
	
}
